home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 3 / Info_Mac_1994-01.iso / Development / General / SpriteWorld 1.0b3 / Headers / SpriteWorld.h < prev    next >
Text File  |  1993-06-07  |  4KB  |  113 lines

  1. ///--------------------------------------------------------------------------------------
  2. //    SpriteWorld.h
  3. //
  4. //    Created:    Wednesday, May 29, 1991 at 10:43:28 PM
  5. //    By:        Tony Myles
  6. //
  7. //    Copyright: © 1991-93 Tony Myles, All rights reserved worldwide
  8. //
  9. //    Description:    constants, structures, and prototypes for sprite worlds
  10. ///--------------------------------------------------------------------------------------
  11.  
  12.  
  13. #ifndef __SPRITEWORLD__
  14. #define __SPRITEWORLD__
  15.  
  16. #ifndef __SPRITELAYER__
  17. #include "SpriteLayer.h"
  18. #endif
  19.  
  20. #ifndef __SPRITE__
  21. #include "Sprite.h"
  22. #endif
  23.  
  24. #ifndef __FRAME__
  25. #include "Frame.h"
  26. #endif
  27.  
  28. #ifndef SW_PASCAL
  29. #define SW_PASCAL
  30. #endif
  31.  
  32. ///--------------------------------------------------------------------------------------
  33. //    sprite world error constants
  34. ///--------------------------------------------------------------------------------------
  35.  
  36. enum
  37. {
  38.     kQuickDrawTooOldErr = 100,
  39.     kTimeMgrNotPresentErr,
  40.     kTimeMgrTooOldErr,
  41.     kMaxFramesErr,                // attempt to exceed maximum number of frames for a sprite
  42.     kInvalidFramesIndexErr    // frame index out of range
  43. };
  44.  
  45.  
  46. ///--------------------------------------------------------------------------------------
  47. //    sprite world type definitions
  48. ///--------------------------------------------------------------------------------------
  49.  
  50. typedef struct SpriteWorldRec SpriteWorldRec;
  51. typedef SpriteWorldRec *SpriteWorldPtr, **SpriteWorldHdl;
  52.  
  53.  
  54. ///--------------------------------------------------------------------------------------
  55. //    sprite world data structure
  56. ///--------------------------------------------------------------------------------------
  57.  
  58. struct SpriteWorldRec
  59. {
  60.     SpriteLayerPtr headSpriteLayerP;    // head of the sprite layer linked list
  61.     SpriteLayerPtr tailSpriteLayerP;    // tail of the sprite layer linked list
  62.  
  63.     FramePtr windowFrameP;            // frame for drawing to the screen
  64.     FramePtr backFrameP;                    // frame for drawing from the background
  65.     FramePtr loadFrameP;                    // frame for drawing to the loader
  66.  
  67.     DrawProcPtr eraseDrawProc;            // callback for erasing sprites offscreen
  68.     MaskDrawProcPtr screenDrawProc;    // callback for drawing sprite pieces onscreen
  69.  
  70.     long userData;                            // reserved for user
  71. };
  72.  
  73.  
  74. ///--------------------------------------------------------------------------------------
  75. //    sprite world function prototypes
  76. ///--------------------------------------------------------------------------------------
  77.  
  78.  
  79. #ifdef __cplusplus
  80. extern "C" {
  81. #endif
  82.  
  83. SW_PASCAL OSErr SWEnterSpriteWorld(void);
  84. SW_PASCAL void SWExitSpriteWorld(void);
  85.  
  86. SW_PASCAL OSErr SWCreateSpriteWorld(SpriteWorldPtr *spriteWorldP, FramePtr windowFrameP, FramePtr backFrameP, FramePtr loadFrameP);
  87. SW_PASCAL OSErr SWCreateSpriteWorldFromWindow(SpriteWorldPtr* spriteWorldP, CWindowPtr srcWindowP, Rect* worldRect);
  88. SW_PASCAL void SWDisposeSpriteWorld(SpriteWorldPtr spriteWorldP);
  89.  
  90. SW_PASCAL void SWAddSpriteLayer(SpriteWorldPtr spriteWorldP, SpriteLayerPtr spriteLayerP);
  91. SW_PASCAL void SWRemoveSpriteLayer(SpriteWorldPtr spriteWorldP, SpriteLayerPtr spriteLayerP);
  92. SW_PASCAL void SWSwapSpriteLayer(SpriteWorldPtr spriteWorldP, SpriteLayerPtr srcSpriteLayerP, SpriteLayerPtr dstSpriteLayerP);
  93. SW_PASCAL SpriteLayerPtr SWGetNextSpriteLayer(SpriteWorldPtr spriteWorldP, SpriteLayerPtr curSpriteLayerP);
  94.  
  95. SW_PASCAL void SWLockSpriteWorld(SpriteWorldPtr spriteWorldP);
  96. SW_PASCAL void SWUnlockSpriteWorld(SpriteWorldPtr spriteWorldP);
  97.  
  98. SW_PASCAL void SWSetPortToBackGround(SpriteWorldPtr spriteWorldP);
  99. SW_PASCAL void SWSetPortToWindow(SpriteWorldPtr spriteWorldP);
  100.  
  101. SW_PASCAL void SWSetSpriteWorldEraseProc(SpriteWorldPtr spriteWorldP, DrawProcPtr eraseProc);
  102. SW_PASCAL void SWSetSpriteWorldDrawProc(SpriteWorldPtr spriteWorldP, MaskDrawProcPtr drawProc);
  103. SW_PASCAL void SWUpdateSpriteWorld(SpriteWorldPtr spriteWorldP);
  104. SW_PASCAL void SWProcessSpriteWorld(SpriteWorldPtr spriteWorldP);
  105. SW_PASCAL void SWAnimateSpriteWorld(SpriteWorldPtr spriteWorldP);
  106.  
  107. static void SWUpdateSpriteOffscreen(SpriteWorldPtr spriteWorldP, SpritePtr srcSpriteP);
  108.  
  109. #ifdef __cplusplus
  110. };
  111. #endif
  112.  
  113. #endif /* __SPRITEWORLD__ */